home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / chrome / browser.jar / content / browser / setDesktopBackground.js < prev    next >
Text File  |  2006-09-22  |  7KB  |  182 lines

  1. //@line 38 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  2.  
  3. const kXUL_NS            = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  4. const kIShellService    = Components.interfaces.nsIShellService;
  5. //@line 44 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  6.  
  7. var gSetBackground = {
  8.   _position         : kIShellService.BACKGROUND_STRETCH,
  9.   _monitor          : null,
  10.   _image            : null,
  11.   _backgroundColor  : 0,
  12.  
  13. //@line 52 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  14.   // Converts a color string in the format "#RRGGBB" to an integer.
  15.   _hexStringToLong: function (aString)
  16.   {
  17.     return parseInt(aString.substring(1,3), 16) << 16 | 
  18.            parseInt(aString.substring(3,5), 16) << 8 |
  19.            parseInt(aString.substring(5,7), 16);
  20.   },
  21.   
  22.   _rgbToHex: function(aR, aG, aB) 
  23.   {
  24.     var rHex = aR.toString(16).toUpperCase();
  25.     var gHex = aG.toString(16).toUpperCase();
  26.     var bHex = aB.toString(16).toUpperCase();
  27.  
  28.     if (rHex.length == 1) rHex ='0' + rHex;
  29.     if (gHex.length == 1) gHex ='0' + gHex;
  30.     if (bHex.length == 1) bHex ='0' + bHex;
  31.  
  32.     return '#' + rHex + gHex + bHex;
  33.   },
  34. //@line 73 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  35.  
  36.   get _shell()
  37.   {
  38.     return Components.classes["@mozilla.org/browser/shell-service;1"]
  39.                      .getService(Components.interfaces.nsIShellService);
  40.   },
  41.  
  42.   load: function ()
  43.   {
  44.     this._monitor = document.getElementById("monitor");
  45. //@line 86 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  46.     this.init(window.arguments[0]);
  47.   },
  48.         
  49.   init: function (aImage)
  50.   {
  51.     this._image = aImage;
  52.  
  53. //@line 94 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  54.     this._initColor();
  55.     var position = parseInt(document.getElementById("menuPosition").value);
  56. //@line 110 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  57.     this.updatePosition(position);
  58.   },
  59.         
  60. //@line 114 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  61.   _initColor: function ()
  62.   {
  63.     var color = this._shell.desktopBackgroundColor;
  64.  
  65.     const rMask = 4294901760;
  66.     const gMask = 65280;
  67.     const bMask = 255;
  68.     var r = (color & rMask) >> 16;
  69.     var g = (color & gMask) >> 8;
  70.     var b = (color & bMask);
  71.     this._backgroundColor = this._rgbToHex(r, g, b);
  72.  
  73.     var colorpicker = document.getElementById("desktopColor");
  74.     colorpicker.color = this._rgbToHex(r, g, b);
  75.   },
  76. //@line 130 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  77.  
  78.   observe: function (aSubject, aTopic, aData)
  79.   {
  80.     if (aTopic == "shell:desktop-background-changed") {
  81.       var setDesktopBackground = document.getElementById("setDesktopBackground");
  82.       setDesktopBackground.hidden = true;
  83.       
  84.       var showDesktopPreferences = document.getElementById("showDesktopPreferences");
  85.       showDesktopPreferences.hidden = false;
  86.  
  87.       var os = Components.classes["@mozilla.org/observer-service;1"]
  88.                          .getService(Components.interfaces.nsIObserverService);
  89.       os.removeObserver(this, "shell:desktop-background-changed");
  90.     }
  91.   },
  92.  
  93. //@line 166 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  94.   setDesktopBackground: function () 
  95.   {
  96.     this._shell.setDesktopBackground(this._image, this._position);
  97.     this._shell.desktopBackgroundColor = this._hexStringToLong(this._backgroundColor);
  98.     document.persist("menuPosition", "value");
  99.   },
  100. //@line 173 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  101.  
  102.   updateColor: function (color)
  103.   {
  104. //@line 177 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  105.     this._backgroundColor = color;
  106.     
  107.     if (this._position != kIShellService.BACKGROUND_TILE)
  108.       this._monitor.style.backgroundColor = color;
  109. //@line 182 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/shell/content/setDesktopBackground.js"
  110.   },
  111.   
  112.   updatePosition: function (aPosition)
  113.   {
  114.     if (this._monitor.childNodes.length)
  115.       this._monitor.removeChild(this._monitor.firstChild);
  116.       
  117.     this._position = aPosition;
  118.     if (this._position == kIShellService.BACKGROUND_TILE)
  119.       this._tileImage();
  120.     else if (this._position == kIShellService.BACKGROUND_STRETCH)
  121.       this._stretchImage();
  122.     else
  123.       this._centerImage();
  124.   },
  125.  
  126.   _createImage: function ()
  127.   {
  128.     const nsIImageLoadingContent = Components.interfaces.nsIImageLoadingContent;
  129.     if (!(this._image instanceof nsIImageLoadingContent))
  130.         return false;
  131.  
  132.     var request = this._image.QueryInterface(nsIImageLoadingContent)
  133.                              .getRequest(nsIImageLoadingContent.CURRENT_REQUEST);
  134.     if (!request)
  135.       return false;
  136.  
  137.     var imgURI = this._image.currentURI;
  138.     if (imgURI.schemeIs("javascript"))
  139.       return false;
  140.  
  141.     var img = document.createElementNS(kXUL_NS, "image");
  142.     img.setAttribute("src", imgURI.spec);
  143.     return img;
  144.   },
  145.         
  146.   _stretchImage: function ()
  147.   {  
  148.     this.updateColor(this._backgroundColor);
  149.  
  150.     var img = this._createImage();
  151.     img.width = parseInt(this._monitor.style.width);
  152.     img.height = parseInt(this._monitor.style.height);
  153.     this._monitor.appendChild(img);
  154.   },
  155.         
  156.   _tileImage: function ()
  157.   {
  158.     var bundle = document.getElementById("backgroundBundle");
  159.  
  160.     this._monitor.style.backgroundColor = "white";
  161.  
  162.     var text = document.createElementNS(kXUL_NS, "label");
  163.     text.setAttribute("id", "noPreviewAvailable");
  164.     text.setAttribute("value", bundle.getString("DesktopBackgroundNoPreview"));
  165.     this._monitor.appendChild(text);
  166.   },
  167.         
  168.   _centerImage: function ()
  169.   {
  170.     this.updateColor(this._backgroundColor);
  171.              
  172.     var img = this._createImage();
  173.     // Use naturalHeight/Width here so we don't scale an image improperly in
  174.     // the preview window if the image is resized in the browser window.
  175.     var width = this._image.naturalWidth * this._monitor.boxObject.width / screen.width;
  176.     var height = this._image.naturalHeight * this._monitor.boxObject.height / screen.height;
  177.     img.width = Math.floor(width);
  178.     img.height = Math.floor(height);
  179.     this._monitor.appendChild(img);
  180.   }
  181. };
  182.